package com.yuw.control.userinfoRest;

import com.yuw.bean.UserInfoBean;
import com.yuw.service.IUserInfoService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/userinfo")
public class UserInfoControl {

    // springmvc service层的依赖注入
    @Resource
    private IUserInfoService userInfoService;

    /**
     * ajax进行数据查询处理
     *
     * @param userInfoBean 查询参数信息
     * @return 查询结果集
     */
    @RequestMapping("/ajaxQueryUserInfoByPramas")
    public List<UserInfoBean> doAjaxQueryByPramas(UserInfoBean userInfoBean) {

        // 调用service层经进行数据库查询操作
        List<UserInfoBean> lstUserInfos = userInfoService.selectUserInfoByParams(userInfoBean);
        // 在springmvc中直接放回数据结构，springmvc会自动把数据结果集转换为 json数据串发给客户端
        // 如果不是springmvc框架，则需要使用手动或者第三方工具将结果集转换为json字符串发回给客户端
        return lstUserInfos;
    }

    /**
     * ajax进行数据查询处理
     *
     * @param userInfoBean 查询参数信息
     * @return 查询结果集
     */
    @RequestMapping("/ajaxQueryUserInfoByPramas2")
    public ResponseEntity<List<UserInfoBean>> doAjaxQueryByPramas2(UserInfoBean userInfoBean) {

        // 调用service层经进行数据库查询操作
        List<UserInfoBean> lstUserInfos = userInfoService.selectUserInfoByParams(userInfoBean);
        // 在springmvc中直接放回数据结构，springmvc会自动把数据结果集转换为 json数据串发给客户端
        // 如果不是springmvc框架，则需要使用手动或者第三方工具将结果集转换为json字符串发回给客户端
        return new ResponseEntity<>(lstUserInfos, HttpStatus.OK);
    }

    /**
     * 保存和修改用于信息
     *
     * @param userInfoBean 用户参数实体类
     * @return 结果视图
     */

    @RequestMapping("/saveOrUpdateUserinfo2")
    public ResponseEntity<List<UserInfoBean>> saveOrUpdateUserInfo(UserInfoBean userInfoBean) {

        // 打印需要保存的实体类型信息
        System.out.println("新增：" + userInfoBean.toString());

        // 调用Service层进行用户信息数据保存和修改操作
        int i = userInfoService.saveOrUpdateUserInfo(userInfoBean);
        // 查询新增之后的所有的数据结果，然后进行显示
        List<UserInfoBean> lstUserInfos = userInfoService.queryAllUserInfo();
        // 根据操作结果进行视图转发处理
        return new ResponseEntity<>(lstUserInfos, HttpStatus.OK);
    }

}
